/*
 *  VortSymmetryPlane.h
 *  VortPan
 *
 *  Created by Gregor Veble on 7/15/10.
 *  Copyright 2010  . All rights reserved.
 *
 */

#ifndef VORTSYMMETRYPLANE_H
#define VORTSYMMETRYPLANE_H

#include "VortBase.h"

namespace VortPan {
	class VortSymmetryPlane : public VortBase {
	public:
		VortSymmetryPlane(Vector3D Point=V0(), Vector3D Normal=e2());
		~VortSymmetryPlane();
		
		void SetParams(Vector3D Point, Vector3D Normal);
		Vector3D Reflect(const Vector3D& Point);
		Vector3D Mirror(const Vector3D& Normal);
		re PlaneDistance(const Vector3D& Point);
		Matrix3D& GetReflectionMatrix();
	protected:
		
		Vector3D SymmetryPoint, SymmetryNormal;
		Matrix3D ReflectionMatrix;
	};
	
	inline VortSymmetryPlane DefaultPlane(){
		VortSymmetryPlane P;
		return P;
	}
}

#endif

